// pages/store-manage/create/create.js
import Toast from '@vant/weapp/toast/toast';

Page({
  /**
   * 页面的初始数据
   */
  data: {
    // 表单数据
    formData: {
      name: '',
      linkMan: '',
      linkPhone: '',
      address: '',
      latitude: '',
      longitude: '',
      openingHours: '09:00-22:00',
      serviceDistance: 5,
      type: '自营',
      expressType: 'dada',
      openScan: true,
      openWaimai: true,
      openZiqu: true,
      goodsNeedCheck: false,
      characteristic: '',
      businessScope: '',
      introduce: '',
      coverUrl: '',
      provinceId: '',
      cityId: '',
      districtId: ''
    },
    
    // 封面图片
    coverFileList: [],
    coverUrl: '',
    
    // 选择器相关
    showTypePopup: false,
    showExpressPopup: false,
    typeColumns: ['自营', '加盟', '合作'],
    expressColumns: ['dada', '顺丰', '圆通', '中通', '申通'],
    
    // 提交状态
    submitting: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 如果是编辑模式，加载门店信息
    if (options.id) {
      this.loadStoreInfo(options.id);
    }
  },

  /**
   * 加载门店信息（编辑模式）
   */
  loadStoreInfo(storeId) {
    // 这里应该调用API获取门店信息
    // 示例数据结构已在注释中提供
  },

  /**
   * 封面图片上传
   */
  onCoverUpload(event) {
    const { file } = event.detail;
    // 这里应该上传图片到服务器
    // 临时显示本地图片
    this.setData({
      coverUrl: file.url,
      'formData.coverUrl': file.url,
      coverFileList: [file]
    });
  },

  /**
   * 删除封面图片
   */
  onCoverDelete() {
    this.setData({
      coverUrl: '',
      'formData.coverUrl': '',
      coverFileList: []
    });
  },

  /**
   * 选择位置
   */
  selectLocation() {
    wx.chooseLocation({
      success: (res) => {
        this.setData({
          'formData.address': res.address,
          'formData.latitude': res.latitude,
          'formData.longitude': res.longitude
        });
      },
      fail: (err) => {
        if (err.errMsg.includes('auth deny')) {
          Toast('请授权位置信息');
        }
      }
    });
  },

  /**
   * 显示门店类型选择器
   */
  showTypePicker() {
    this.setData({ showTypePopup: true });
  },

  /**
   * 隐藏门店类型选择器
   */
  hideTypePicker() {
    this.setData({ showTypePopup: false });
  },

  /**
   * 确认门店类型选择
   */
  onTypeConfirm(event) {
    const { value } = event.detail;
    this.setData({
      'formData.type': value,
      showTypePopup: false
    });
  },

  /**
   * 显示快递类型选择器
   */
  showExpressPicker() {
    this.setData({ showExpressPopup: true });
  },

  /**
   * 隐藏快递类型选择器
   */
  hideExpressPicker() {
    this.setData({ showExpressPopup: false });
  },

  /**
   * 确认快递类型选择
   */
  onExpressConfirm(event) {
    const { value } = event.detail;
    this.setData({
      'formData.expressType': value,
      showExpressPopup: false
    });
  },

  /**
   * 表单验证
   */
  validateForm() {
    const { formData } = this.data;
    
    if (!formData.name.trim()) {
      Toast('请输入门店名称');
      return false;
    }
    
    if (!formData.linkPhone.trim()) {
      Toast('请输入联系电话');
      return false;
    }
    
    if (!formData.address.trim()) {
      Toast('请选择门店地址');
      return false;
    }
    
    if (!formData.openingHours.trim()) {
      Toast('请输入营业时间');
      return false;
    }
    
    // 验证手机号格式
    const phoneRegex = /^1[3-9]\d{9}$/;
    if (!phoneRegex.test(formData.linkPhone)) {
      Toast('请输入正确的手机号');
      return false;
    }
    
    return true;
  },

  /**
   * 提交表单
   */
  async submitForm() {
    if (!this.validateForm()) {
      return;
    }
    
    this.setData({ submitting: true });
    
    try {
      // 这里应该调用API提交门店信息
      const result = await this.createStore(this.data.formData);
      
      if (result.success) {
        Toast.success('门店创建成功');
        setTimeout(() => {
          wx.navigateBack();
        }, 1500);
      } else {
        Toast.fail(result.message || '创建失败');
      }
    } catch (error) {
      console.error('创建门店失败:', error);
      Toast.fail('网络错误，请重试');
    } finally {
      this.setData({ submitting: false });
    }
  },

  /**
   * 创建门店API调用
   */
  async createStore(storeData) {
    // 这里应该调用实际的API
    // 返回示例格式
    return new Promise((resolve) => {
      setTimeout(() => {
        resolve({
          success: true,
          data: { id: Date.now() },
          message: '创建成功'
        });
      }, 2000);
    });
  }
})